BaseProtocolServer

StockSharp.Server.Core

Basisklasse für Protokollserver (FIX, SBE usw.): Enthält gemeinsam genutzte Infrastruktur: Lebenszyklus, Sitzungen, Abonnements, Nachrichtenkanäle, Hintergrundaufgaben.

Erbt von: BaseLogReceiver

Implementiert: IProtocolServer, ILogReceiver, ILogSource, IDisposable

Konstruktoren

BaseProtocolServer
protected BaseProtocolServer(TSettings settings)
baseProtocolServer = BaseProtocolServer(settings)

Initialisiert eine neue Instanz.

settings
Servereinstellungen.

Eigenschaften

LoginRateLimiter
protected LoginRateLimiter LoginRateLimiter { get; private set; }
value = baseProtocolServer.LoginRateLimiter
baseProtocolServer.LoginRateLimiter = value

Rate Limiter für Anmeldeversuche (über alle Zuhörer geteilt).

Sessions
public IEnumerable<IMessageListenerSession> Sessions { get; }
value = baseProtocolServer.Sessions

Aktive Sitzungen.

Settings
public TSettings Settings { get; }
value = baseProtocolServer.Settings

Einstellungen.

State
public ChannelStates State { get; protected set; }
value = baseProtocolServer.State
baseProtocolServer.State = value

Bekommt den zugrunde liegenden Zustandsspeicher.

Methoden

AddSubscription
public void AddSubscription(ServerSubscription subscription)
baseProtocolServer.AddSubscription(subscription)

Abonnement hinzufügen.

subscription
Zeichnung.
ClearState
protected virtual void ClearState()
baseProtocolServer.ClearState()

Löschen Sie alle Zustände: Zuhörer, Sitzungen, Abonnements.

Convert
protected string Convert(string value)
result = baseProtocolServer.Convert(value)

Konvertieren Sie Text in Latein, wenn konfiguriert.

CreateSubscription
protected abstract TSubscription CreateSubscription(TClientSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = baseProtocolServer.CreateSubscription(session, requestId, subscription, type)

Erstellen Sie eine Abonnement-Info-Instanz.

Disconnect
public void Disconnect(IMessageListenerSession session)
baseProtocolServer.Disconnect(session)

Sitzung trennen.

session
Sitzung.
DisposeManaged
protected override void DisposeManaged()
baseProtocolServer.DisposeManaged()

Ressourcen freigeben.

EnqueueMessage
protected void EnqueueMessage(TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, requestId, handler, cancellationToken)

Warteschlange für eine Sitzung mit Request-ID.

EnqueueMessage
protected void EnqueueMessage(TSubscription subscription, TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, session, requestId, handler, cancellationToken)

Core Enqueue: Planen Sie die Arbeit an einer Client-Sitzung.

EnqueueMessage
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)

Warteschlange für mehrere Abonnenten.

EnqueueMessage
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)

Warteschlange für mehrere Abonnenten (mit Bool-Ergebnis).

EnqueueMessage
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)

Warteschlange für ein einzelnes Abonnement.

EnqueueMessage
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)

Warteschlange für ein einzelnes Abonnement (mit Bool-Ergebnis).

EnqueueMessage
protected void EnqueueMessage(TClientSession session, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, handler, cancellationToken)

Warteschlange für eine Sitzung (keine Anfrage-ID).

GetSessionKey
protected abstract string GetSessionKey(TClientSession session)
result = baseProtocolServer.GetSessionKey(session)

Holen Sie sich den Schlüssel, der verwendet wird, um Client-Sitzungen zu gruppieren (e.g. SenderCompId).

GetSubscriptions
public IEnumerable<ServerSubscription> GetSubscriptions(IMessageListenerSession session)
result = baseProtocolServer.GetSubscriptions(session)

Erhalten Sie ein Abonnement für die angegebene Sitzung.

session
Sitzung.

Rückgabe: Abonnements.

HasSubscriptions
public bool HasSubscriptions(DataType dataType, SecurityId securityId)
result = baseProtocolServer.HasSubscriptions(dataType, securityId)

Are there subscribers.

IsStubSubscription
protected abstract bool IsStubSubscription(TSubscription subscription)
result = baseProtocolServer.IsStubSubscription(subscription)

Überprüfen Sie, ob es sich bei dem Abonnement um einen Stub (Platzhalter) handelt.

Load
public override void Load(SettingsStorage storage)
baseProtocolServer.Load(storage)

Lasteinstellungen.

storage
Einstellungen Lagerung.
OnClearListenerState
protected abstract void OnClearListenerState()
baseProtocolServer.OnClearListenerState()

Klarer protokollspezifischer Listener-Zustand (Stop Listener, etc.).

OnStartListeners
protected abstract void OnStartListeners(CancellationToken cancellationToken)
baseProtocolServer.OnStartListeners(cancellationToken)

Starten Sie protokollspezifische Listener (TCP, etc.). Fügen Sie Aufgaben zu _backgroundTasks hinzu.

ProcessInMessage
protected abstract void ProcessInMessage(Message message, CancellationToken cancellationToken)
baseProtocolServer.ProcessInMessage(message, cancellationToken)

Verarbeiten Sie eine eingehende Nachricht und Route zu abonnierten Clients.

ProcessLogout
protected virtual void ProcessLogout(TClientSession session)
baseProtocolServer.ProcessLogout(session)

Client-Logout/Disconnect bearbeiten.

RaiseNewOutMessage
protected void RaiseNewOutMessage(IMessageListenerSession session, Message message)
baseProtocolServer.RaiseNewOutMessage(session, message)

Schreiben Sie ausgehende Nachricht an den Kanal.

RaiseSessionConnected
protected void RaiseSessionConnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionConnected(session)

Raise Session Connected Event.

RaiseSessionDisconnected
protected void RaiseSessionDisconnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionDisconnected(session)

Raise Session Disconnected Event.

RemoveSubscription
public bool RemoveSubscription(ServerSubscription subscription)
result = baseProtocolServer.RemoveSubscription(subscription)

Abo entfernen.

subscription
Zeichnung.

Rückgabe: wenn das Abonnement gefunden wurde, andernfalls.

Resume
public bool Resume(ServerSubscription subscription)
result = baseProtocolServer.Resume(subscription)

Abonnement fortsetzen.

subscription
Zeichnung.

Rückgabe: wenn das Abonnement gefunden wurde, andernfalls.

Resume
public void Resume(IMessageListenerSession session)
baseProtocolServer.Resume(session)

Sitzung fortsetzen.

session
Sitzung.
RunAsync
public IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>> RunAsync(CancellationToken cancellationToken)
result = baseProtocolServer.RunAsync(cancellationToken)

Führen Sie die Verarbeitung von async-Nachrichten aus und geben Sie ausgehende Nachrichten als IAsyncEnumerable zurück. Öffnet den Server am Anfang und schließt am Ende.

Save
public override void Save(SettingsStorage storage)
baseProtocolServer.Save(storage)

Einstellungen speichern.

storage
Einstellungen Lagerung.
ScheduleSessionWork
protected abstract void ScheduleSessionWork(TClientSession session, ServerSubscription subscription, string requestId, Func<TClientSession, string, CancellationToken, ValueTask<bool>> handler)
baseProtocolServer.ScheduleSessionWork(session, subscription, requestId, handler)

Planen Sie die Arbeit an der ausgehenden Warteschlange einer Clientsitzung.

SendInMessage
public virtual bool SendInMessage(Message message)
result = baseProtocolServer.SendInMessage(message)

Senden Sie eine eingehende Nachricht an den Server zur Verarbeitung und Weiterleitung an die Clients.

StartServer
protected void StartServer(CancellationToken cancellationToken)
baseProtocolServer.StartServer(cancellationToken)

Starten Sie den Server: Initialisieren Sie den Status, starten Sie die Listener und Hintergrundaufgaben.

StopServer
protected void StopServer()
baseProtocolServer.StopServer()

Stoppen Sie den Server: Aufgaben abbrechen, Kanäle komplettieren, Zustand freigeben.

Suspend
public void Suspend(IMessageListenerSession session)
baseProtocolServer.Suspend(session)

Sitzung unterbrechen.

session
Sitzung.
Suspend
public bool Suspend(ServerSubscription subscription)
result = baseProtocolServer.Suspend(subscription)

Subscription aussetzen.

subscription
Zeichnung.

Rückgabe: wenn das Abonnement gefunden wurde, andernfalls.

Ereignisse

SessionConnected
public event Action<IMessageListenerSession> SessionConnected
baseProtocolServer.SessionConnected += handler

Session Connected Event.

SessionDisconnected
public event Action<IMessageListenerSession> SessionDisconnected
baseProtocolServer.SessionDisconnected += handler

Session Disconnected Event.

StateChanged
public event Action StateChanged
baseProtocolServer.StateChanged += handler

Ereignis der Zustandsänderung.

SubscriptionChanged
public event Action<ServerSubscription> SubscriptionChanged
baseProtocolServer.SubscriptionChanged += handler

Client-Abonnement änderte Ereignis.

Felder

_backgroundTasks
protected readonly List<Task> _backgroundTasks
value = baseProtocolServer._backgroundTasks

Hintergrundaufgaben (Clients akzeptieren, Nachrichten verarbeiten usw.).

_cancellationRequests
protected readonly SynchronizedSet<long> _cancellationRequests
value = baseProtocolServer._cancellationRequests

Transaktions-IDs für ausstehende Auftragsstornierungsanfragen.

_changedSubscriptions
protected readonly SynchronizedSet<ServerSubscription> _changedSubscriptions
value = baseProtocolServer._changedSubscriptions

Geänderte Abonnements bis zur Benachrichtigung.

_clientSessions
protected readonly CachedSynchronizedDictionary<string, CachedSynchronizedList<TClientSession>> _clientSessions
value = baseProtocolServer._clientSessions

Client-Sitzungen nach Sitzungsschlüssel gruppiert (e.g. SenderCompId).

_incomingMessages
protected readonly Channel<Message> _incomingMessages
value = baseProtocolServer._incomingMessages

Kanal für eingehende Nachrichten.

_outgoingMessages
protected readonly Channel<ValueTuple<IMessageListenerSession, Message>> _outgoingMessages
value = baseProtocolServer._outgoingMessages

Kanal für ausgehende Nachrichten (Sitzung + Nachrichtenpaare).

_subscriptions
protected readonly SubscriptionHolder<TSubscription, TClientSession> _subscriptions
value = baseProtocolServer._subscriptions

Zeichnungsinhaber.